/**
 *Copyright (c) 2024 watereyes
 * safetymanagement is licensed under Mulan PubL v2.
 * You can use this software according to the terms and conditions of the Mulan
 * PubL v2.
 * You may obtain a copy of Mulan PubL v2 at:
 *          http://license.coscl.org.cn/MulanPubL-2.0
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PubL v2 for more details.
 */
package com.koron.hiddendanger.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.koron.common.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

@ApiModel(value = "安全检查计划", description = "安全检查计划实体类")
public class PerformancePlan extends BaseEntity {
    @ApiModelProperty(value = "计划名称", name = "name", required = true)
    private String name;

    @ApiModelProperty(value = "描述", name = "description")
    private String description;

    @ApiModelProperty(value = "检查范围——水司code", name = "corpCode", required = true)
    private String corpCode;

    @ApiModelProperty(value = "检查范围——水司名称", name = "corpName", required = true)
    private String corpName;

    @ApiModelProperty(value = "检查范围——所在子节点code", name = "gridCode", required = true)
    private String gridCode;

    @ApiModelProperty(value = "检查范围——所在位置名称，包含所有父节点及本身的名称", name = "gridName", required = true)
    private String gridName;

    @ApiModelProperty(value = "频次,选定周期类型执行多次，如周期类型为每周，频次为2，即每周执行2次", name = "frequency", required = true)
    private Integer frequency;

    @ApiModelProperty(value = "周期类型,0:每周,1:每月,2:每季度,3:每半年,4:每年,5:单次,6:每天", name = "repeatType")
    private Integer repeatType;

    @ApiModelProperty(value = "开始时间，计划开始时间", name = "beginTime", required = true)
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    private Date beginTime;

    @ApiModelProperty(value = "截止时间,计划截止时间", name = "endTime")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    private Date endTime;

    @ApiModelProperty(value = "计划时间,用于导出", name = "time")
    private String time;

    @ApiModelProperty(value = "隐患数量,用于导出", name = "hiddenDangerDiscoveryCount")
    private Integer hiddenDangerDiscoveryCount;

    @ApiModelProperty(value = "计划制定人code和计划制定人userid(登录用户名), 格式用下划线分隔", name = "planCreater", required = true)
    private String planCreater;

    @ApiModelProperty(value = "计划制定人名称和所在单位名称, 格式用下划线分隔", name = "planCreaterName")
    private String planCreaterName;

    @ApiModelProperty(value = "计划审批人code和userid(登录用户名), 格式用下划线分隔", name = "planApprover", required = true)
    private String planApprover;

    @ApiModelProperty(value = "计划审批人名称和所在单位名称, 格式用下划线分隔", name = "planApproverName")
    private String planApproverName;

    @ApiModelProperty(value = "检查执行人，可以选择多个执行人员，存code和userid(登录用户名),存储格式为json格式{'codes':[staffCode_userid,...]}", name = "executors", required = true)
    private String executors;

    @ApiModelProperty(value = "检查执行人，可以选择多个执行人员，存名称和所在单位名称,存储格式为json格式{'codes':[staffName_departmentName,...]}", name = "executorsName")
    private String executorsName;

    @ApiModelProperty(value = "内部检查人员code和userid(登录用户名),,存储格式为json格式{'codes':[staffName_userid,...]}", name = "innerWorkers")
    private String innerWorkers;

    @ApiModelProperty(value = "内部检查人员名称和所在单位名称,存储格式为json格式{'codes':[staffName_departmentName,...]}", name = "innerWorkersName")
    private String innerWorkersName;

    @ApiModelProperty(value = "外部检查人员和所在单位,可以输入多个检查人员，不同检查人员之间用,分开，格式：名称_部门，名称_部门", name = "outterWorkers")
    private String outterWorkers;

    @ApiModelProperty(value = "验证人code和userid(登录用户名)", name = "managerName")
    private String identifier;

    @ApiModelProperty(value = "验证人名称和所在单位名称，用_分隔", name = "identifierName")
    private String identifierName;

    @ApiModelProperty(value = "负责人code和userid(登录用户名),最终负责人，用_分隔", name = "manager")
    private String manager;

    @ApiModelProperty(value = "负责人名称和所在单位名称，用_分隔", name = "managerName")
    private String managerName;

    @ApiModelProperty(value = "计划使用状态，0:暂停,1:运行", name = "useState", required = true)
    private Integer useState;

    @ApiModelProperty(value = "计划状态: 3:新增驳回（草稿）,1:提交审批,2:生效发布,4,废弃", name = "planState", required = true)
    private Integer planState;

    @ApiModelProperty(value = "是否删除, 0:否,1:是", name = "removed", required = true)
    private Integer removed;

    @ApiModelProperty(value = "检查类别", name = "checkTheme", required = true)
    private String checkTheme;

    @ApiModelProperty(value = "检查层级", name = "checkLevel", required = true)
    private String checkLevel;

    @ApiModelProperty(value = "检查层级名称", name = "checkLevelName", required = true)
    private String checkLevelName;

    @ApiModelProperty(value = "检查记录的负责人名称和所在单位名称，用_分隔", name = "managerName")
    private String checkRecordManagerName;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getCorpCode() {
        return corpCode;
    }

    public void setCorpCode(String corpCode) {
        this.corpCode = corpCode;
    }

    public String getCorpName() {
        return corpName;
    }

    public void setCorpName(String corpName) {
        this.corpName = corpName;
    }

    public String getGridCode() {
        return gridCode;
    }

    public void setGridCode(String gridCode) {
        this.gridCode = gridCode;
    }

    public String getGridName() {
        return gridName;
    }

    public void setGridName(String gridName) {
        this.gridName = gridName;
    }

    public Integer getFrequency() {
        return frequency;
    }

    public void setFrequency(Integer frequency) {
        this.frequency = frequency;
    }

    public Integer getRepeatType() {
        return repeatType;
    }

    public void setRepeatType(Integer repeatType) {
        this.repeatType = repeatType;
    }

    public Date getBeginTime() {
        return beginTime;
    }

    public void setBeginTime(Date beginTime) {
        this.beginTime = beginTime;
    }

    public Date getEndTime() {
        return endTime;
    }

    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    public String getPlanCreater() {
        return planCreater;
    }

    public void setPlanCreater(String planCreater) {
        this.planCreater = planCreater;
    }

    public String getPlanCreaterName() {
        return planCreaterName;
    }

    public void setPlanCreaterName(String planCreaterName) {
        this.planCreaterName = planCreaterName;
    }

    public String getPlanApprover() {
        return planApprover;
    }

    public void setPlanApprover(String planApprover) {
        this.planApprover = planApprover;
    }

    public String getPlanApproverName() {
        return planApproverName;
    }

    public void setPlanApproverName(String planApproverName) {
        this.planApproverName = planApproverName;
    }

    public String getExecutors() {
        return executors;
    }

    public void setExecutors(String executors) {
        this.executors = executors;
    }

    public String getExecutorsName() {
        return executorsName;
    }

    public void setExecutorsName(String executorsName) {
        this.executorsName = executorsName;
    }

    public String getInnerWorkers() {
        return innerWorkers;
    }

    public void setInnerWorkers(String innerWorkers) {
        this.innerWorkers = innerWorkers;
    }

    public String getInnerWorkersName() {
        return innerWorkersName;
    }

    public void setInnerWorkersName(String innerWorkersName) {
        this.innerWorkersName = innerWorkersName;
    }

    public String getOutterWorkers() {
        return outterWorkers;
    }

    public void setOutterWorkers(String outterWorkers) {
        this.outterWorkers = outterWorkers;
    }

    public String getIdentifier() {
        return identifier;
    }

    public void setIdentifier(String identifier) {
        this.identifier = identifier;
    }

    public String getIdentifierName() {
        return identifierName;
    }

    public void setIdentifierName(String identifierName) {
        this.identifierName = identifierName;
    }

    public String getManager() {
        return manager;
    }

    public void setManager(String manager) {
        this.manager = manager;
    }

    public String getManagerName() {
        return managerName;
    }

    public void setManagerName(String managerName) {
        this.managerName = managerName;
    }

    public Integer getUseState() {
        return useState;
    }

    public void setUseState(Integer useState) {
        this.useState = useState;
    }

    public Integer getPlanState() {
        return planState;
    }

    public void setPlanState(Integer planState) {
        this.planState = planState;
    }

    public Integer getRemoved() {
        return removed;
    }

    public void setRemoved(Integer removed) {
        this.removed = removed;
    }

    public String getCheckLevel() {
        return checkLevel;
    }

    public void setCheckLevel(String checkLevel) {
        this.checkLevel = checkLevel;
    }

    public String getCheckLevelName() {
        return checkLevelName;
    }

    public void setCheckLevelName(String checkLevelName) {
        this.checkLevelName = checkLevelName;
    }

    public String getCheckTheme() {
        return checkTheme;
    }

    public void setCheckTheme(String checkTheme) {
        this.checkTheme = checkTheme;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public Integer getHiddenDangerDiscoveryCount() {
        return hiddenDangerDiscoveryCount;
    }

    public void setHiddenDangerDiscoveryCount(Integer hiddenDangerDiscoveryCount) {
        this.hiddenDangerDiscoveryCount = hiddenDangerDiscoveryCount;
    }

    public String getCheckRecordManagerName() {
        return checkRecordManagerName;
    }

    public void setCheckRecordManagerName(String checkRecordManagerName) {
        this.checkRecordManagerName = checkRecordManagerName;
    }

    @Override
    public String toString() {
        return "PerformancePlan{" +
                "name='" + name + '\'' +
                ", description='" + description + '\'' +
                ", corpCode='" + corpCode + '\'' +
                ", corpName='" + corpName + '\'' +
                ", gridCode='" + gridCode + '\'' +
                ", gridName='" + gridName + '\'' +
                ", frequency=" + frequency +
                ", repeatType=" + repeatType +
                ", beginTime=" + beginTime +
                ", endTime=" + endTime +
                ", planCreater='" + planCreater + '\'' +
                ", planCreaterName='" + planCreaterName + '\'' +
                ", planApprover='" + planApprover + '\'' +
                ", planApproverName='" + planApproverName + '\'' +
                ", executors='" + executors + '\'' +
                ", executorsName='" + executorsName + '\'' +
                ", innerWorkers='" + innerWorkers + '\'' +
                ", innerWorkersName='" + innerWorkersName + '\'' +
                ", outterWorkers='" + outterWorkers + '\'' +
                ", identifier='" + identifier + '\'' +
                ", identifierName='" + identifierName + '\'' +
                ", manager='" + manager + '\'' +
                ", managerName='" + managerName + '\'' +
                ", useState=" + useState +
                ", planState=" + planState +
                ", removed=" + removed +
                ", checkTheme='" + checkTheme + '\'' +
                ", checkLevel='" + checkLevel + '\'' +
                ", checkLevelName='" + checkLevelName + '\'' +
                '}';
    }
}
